import Vue from 'vue'
import App from './App'
import router from './router'

import 'common/stylus/index.styl'

import axios from 'axios'

// 完整引入Element
import ElementUI from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css';

// 引入无限滚动组件
import infiniteScroll from 'vue-infinite-scroll'

// 引入vuex
import Vuex from 'vuex'

Vue.use(ElementUI)

Vue.use(infiniteScroll)

Vue.use(Vuex)

Vue.prototype.$axios = axios;
Vue.prototype.HOST = '/kugou_music_api';
Vue.prototype.HOSTSearch = '/kugou_music_search_api';
Vue.prototype.HOSTLyric = '/kugou_music_lyric_api';
Vue.config.productionTip = false;

// 创建仓储store,并注册在app中
const store = new Vuex.Store({
  state: {
    // 当前播放音乐的url,歌手图片,歌曲名，歌手名,用于索引的id,播放时长
    nowsongInfo: JSON.parse(localStorage.getItem('nowsonginfo')) || {},
    //  播放列表:歌手图片，歌曲url     //从本地读取歌曲列表
    songslist: JSON.parse(localStorage.getItem('songslist')) || [],
    // 播放状态(true/false)
    musicStatu: false,
    //  我的喜欢（收藏）：个人中心收藏夹
    mystar: JSON.parse(localStorage.getItem('mystar')) || [],
    //  播放歌曲的方式：随机，顺序，单曲
    playstyle: JSON.parse(localStorage.getItem('playstyle')) || 'normal'
  },
  mutations: {
    // 获取当前播放音乐的 URL, 歌手img
    setnowSongInfo(state, data) {
      // 先置空后设值，使audio可以重置当前歌曲
      state.nowsongInfo = [];
      state.nowsongInfo = data;
      localStorage.setItem('nowsonginfo', JSON.stringify(data));
    },

    setMusicStatu(state, statu) {
      state.musicStatu = statu;
    },
    addSongToList(state, data) {
      // 如果播放列表已存在则不重复添加
      let flag = state.songslist.some(i => {
        // 判断添加的歌和歌单的url(会变，舍弃) 或者歌曲id是否一致
        if (i.id == data.id) {    //eslint-disable-line
          return true
        }
      });
      if (flag != true) {    //eslint-disable-line
        state.songslist.push(data);
        // 存入本地songslist
        localStorage.setItem('songslist', JSON.stringify(state.songslist))
      }
    },

    // 播放列表删除功能：通过歌曲的id删除songlist中的歌
    delOneSongList(state, id) {
      // filter过滤筛选出id不同的歌(删除ID相同的歌)
      state.songslist = state.songslist.filter(i => {
        return i.id != id  //eslint-disable-line
      })
      //  如果删除的歌为当前播放歌曲,1）删除后歌单还有歌：则播放第一首；2)删除后歌单为空：则清空当前播放，播放状态为false
      if (state.nowsongInfo.id == id) {//eslint-disable-line
        if (state.songslist[0]) {
          state.nowsongInfo = state.songslist[0];
        } else {
          state.nowsongInfo = {};
          state.musicStatu = false;
        }
        localStorage.setItem('nowsonginfo', JSON.stringify(state.nowsongInfo))
      }
      // 存入本地songslist
      localStorage.setItem('songslist', JSON.stringify(state.songslist))
    },

    delAllSongList(state) {
      state.songslist = [];
      // 清空本地songslist nowsonginfo
      localStorage.setItem('songslist', JSON.stringify(state.songslist));
      localStorage.setItem('nowsonginfo', {})
    },
    // 添加到我的收藏
    addSongToMystar(state, data) {
      // 如果播放列表已存在则不重复添加
      let flag = state.mystar.some(i => {
        // 判断添加的歌和歌单的url 或者歌曲id是否一致
        if (i.url == data.url && i.id == data.id) {   //eslint-disable-line
          return true
        }
      });
      if (flag != true) {   //eslint-disable-line
        state.mystar.push(data);
        // 存入本地songslist
        localStorage.setItem('mystar', JSON.stringify(state.mystar))
      }
    },
    // 从我的收藏删除，根据ID
    delSongFromMystar(state, id) {
      state.mystar = state.mystar.filter(i => {
        return i.id != id;  //eslint-disable-line
      })
      localStorage.setItem('mystar', JSON.stringify(state.mystar))
    },
    // 设置播放方式
    setPlayStyle(state,style){
      state.playstyle=style;
      localStorage.setItem('playstyle',JSON.stringify(state.playstyle))
    },

  },
  getters: {}
});

/* eslint-disable no-new */
new Vue({
  el: '#app',
  router,
  store,
  render: h => h(App)
})
